#ifndef PARSERHELPER_H
#define PARSERHELPER_H
#include "token.h"
namespace tinyscript{
namespace internal{

class ParserHelper {
public:

    static int GetPriority( int tk ) {
        switch(tk) {
        // This operator is always used to do the basic arithmetic operation
        case Token::TT_ADD: // Can be positive sign as well
        case Token::TT_SUB: // Can be negative sign as well
        case Token::TT_LT:
        case Token::TT_GT:
        case Token::TT_EQ:
        case Token::TT_NEQ:
        case Token::TT_LET:
        case Token::TT_GET:
        case Token::TT_OR:
            return 1;
        case Token::TT_MUL:
        case Token::TT_DIV:
        case Token::TT_MOD:
            return 2;
		default:
			assert(0);
			return 3;
        }
    }

	static bool IsUnaryOperator( int tk ) {
		switch(tk) {
		case Token::TT_NOT:
		case Token::TT_ADD:
		case Token::TT_SUB:
			return true;
		default:
			return false;
		}
	}

	static bool IsBinaryOperator( int tk ) {
		switch(tk) {
		case Token::TT_SUB:
		case Token::TT_ADD:
		case Token::TT_MUL:
		case Token::TT_DIV:
		case Token::TT_MOD:
		case Token::TT_LET:
		case Token::TT_LT:
		case Token::TT_GT:
		case Token::TT_GET:
		case Token::TT_EQ:
		case Token::TT_NEQ:
		case Token::TT_DOT:
			return true;
		default:
			return false;
		}
	}

	static bool IsControlKeyword( int tk ) {
		switch(tk) {
		case Token::TT_CONTINUE:
		case Token::TT_BREAK:
		case Token::TT_PASS:
			return true;
		default:
			return false;
		}
	}

};

}// namespace internal
}// namespace sscript

#endif // PARSERHELPER_H
